package effectiveJava.reflect.proxy;

/**
 * Created by dycong on 2017/9/17.
 */
public class StaticProxy implements Subject{
    private Subject subject = null;

    public StaticProxy(Subject _subject){
        subject=_subject;
    }
    public Object request(){
        before();
        Object o = subject.request();
        after();
        return o;
    }

    @Override
    public Object response() {
        return "response";
    }

    private void before(){

    }
    private void after(){

    }

    // TODO: 2017/9/17 静态代理，就是包装类（实现同一个接口，以便兼容，在真正调用执行类方法前后做一些额外了工作） 
    // TODO: 2017/9/17 静态代理需要定义接口，接口实现类(真正逻辑)，代理类---》1. 抽象主题角色，2. 具体主题角色，3. 代理主题角色
    public static void main(String[] args) {
        StaticProxy proxy = new StaticProxy(new RealSubject());
        System.out.println(proxy.request());
    }
}
